﻿<classes>
  <class name="DatabaseConnectionInfo" assembly="FireStarterModeller.BO" displayName="Database Connection Info">
    <property name="DatabaseConnectionID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Vendor" compulsory="true">
      <simpleLookupList>
        <item display="MySQL" value="MySql" />
        <item display="SQL Server" value="SqlServer" />
        <item display="Oracle" value="Oracle" />
      </simpleLookupList>
    </property>
    <property name="Server" />
    <property name="Port" />
    <property name="Database" />
    <property name="UserName" />
    <property name="Password" />
    <primaryKey>
      <prop name="DatabaseConnectionID" />
    </primaryKey>
    <relationship name="ReverseEngineeringsUsingThisConnection" type="multiple" relatedClass="ReverseEngineering" reverseRelationship="DatabaseConnectionInfo" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="DatabaseConnectionID" relatedProperty="DatabaseConnectionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Vendor" property="Vendor" />
        <column heading="Server" property="Server" />
        <column heading="Port" property="Port" />
        <column heading="Database" property="Database" />
        <column heading="User Name" property="UserName" />
        <column heading="Password" property="Password" />
      </grid>
      <form>
        <field label="Vendor: *" property="Vendor" type="ComboBox" />
        <field label="Server:" property="Server" />
        <field label="Port:" property="Port" />
        <field label="Database:" property="Database" />
        <field label="User Name:" property="UserName" />
        <field label="Password:" property="Password" />
      </form>
    </ui>
  </class>
  <class name="DBColumn" assembly="FireStarterModeller.BO" displayName="DB Column">
    <property name="ColumnID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Column ID" />
    <property name="ColumnName" compulsory="true" />
    <property name="DataType" compulsory="true" />
    <property name="DataLength" type="Int32" />
    <property name="Nullable" type="Boolean" default="true" compulsory="true" />
    <property name="DefaultValue" />
    <property name="TableID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="IsAutoIncrementing" type="Boolean" default="false" />
    <property name="Comment" />
    <property name="OrdinalPosition" type="Int32" />
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey>
      <prop name="ColumnID" />
    </primaryKey>
    <relationship name="ForeignKeyColumnsAsParentColumn" type="multiple" relatedClass="DBForeignKeyColumn" reverseRelationship="ParentColumn" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ColumnID" relatedProperty="ParentColumnID" />
    </relationship>
    <relationship name="ForeignKeyColumnsAsRelatedColumn" type="multiple" relatedClass="DBForeignKeyColumn" reverseRelationship="RelatedColumn" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ColumnID" relatedProperty="RelatedColumnID" />
    </relationship>
    <relationship name="KeyColumns" type="multiple" relatedClass="DBKeyColumn" reverseRelationship="Column" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="MappedDMProperty" type="single" relatedClass="DMProperty" relatedAssembly="FireStarterModeller.BO" owningBOHasForeignKey="false">
      <relatedProperty property="ColumnID" relatedProperty="MappedDBColumnID" />
    </relationship>
    <relationship name="PrimaryKeyColumns" type="multiple" relatedClass="DBPrimaryKeyColumn" reverseRelationship="Column" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="Table" type="single" relatedClass="DBTable" reverseRelationship="Columns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Column Name" property="ColumnName" />
        <column heading="Data Type" property="DataType" />
        <column heading="Data Length" property="DataLength" />
        <column heading="Default Value" property="DefaultValue" />
        <column heading="Comment" property="Comment" />
        <column heading="Is Auto Incrementing" property="IsAutoIncrementing" />
        <column heading="Nullable" property="Nullable" />
        <column heading="Ordinal Position" property="OrdinalPosition" />
        <column heading="Pending Change Type" property="PendingChangeType" />
      </grid>
      <form>
        <field label="Column Name: *" property="ColumnName" />
        <field label="Data Type: *" property="DataType" />
        <field label="Data Length:" property="DataLength" />
        <field label="Nullable? *" property="Nullable" type="CheckBox" />
        <field label="Default Value:" property="DefaultValue" />
        <field label="Comment:" property="Comment" />
        <field label="Is Auto Incrementing?" property="IsAutoIncrementing" type="CheckBox" />
        <field label="Ordinal Position:" property="OrdinalPosition" />
        <field label="Pending Change Type:" property="PendingChangeType" />
      </form>
    </ui>
  </class>
  <class name="DBDatabase" assembly="FireStarterModeller.BO" displayName="DatabaseInfo">
    <property name="DatabaseID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="FSDatabaseID" />
    <property name="DatabaseName" compulsory="true">
      <rule name="Name">
        <add key="maxLength" value="255" />
        <add key="minLength" value="1" />
      </rule>
    </property>
    <property name="Catalog" />
    <property name="Schema" />
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <key name="AK1">
      <prop name="DatabaseName" />
    </key>
    <primaryKey>
      <prop name="DatabaseID" />
    </primaryKey>
    <relationship name="StoredByReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="StoredDatabase" relatedAssembly="FireStarterModeller.BO" owningBOHasForeignKey="false">
      <relatedProperty property="DatabaseID" relatedProperty="StoredDatabaseID" />
    </relationship>
    <relationship name="Tables" type="multiple" relatedClass="DBTable" reverseRelationship="Database" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="DatabaseID" relatedProperty="DatabaseID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Database Name" property="DatabaseName" />
        <column heading="Catalog" property="Catalog" />
        <column heading="Schema" property="Schema" />
      </grid>
      <form>
        <field label="Database Name: *" property="DatabaseName" />
        <field label="Catalog:" property="Catalog" />
        <field label="Schema:" property="Schema" />
      </form>
    </ui>
  </class>
  <class name="DBForeignKey" assembly="FireStarterModeller.BO" displayName="DB Foreign Key">
    <property name="ForeignKeyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ParentTableID" type="Guid">
      <businessObjectLookupList class="DBTable" assembly="FireStarterModeller.BO" />
    </property>
    <property name="RelatedTableID" type="Guid">
      <businessObjectLookupList class="DBTable" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ForeignKeyName" />
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey>
      <prop name="ForeignKeyID" />
    </primaryKey>
    <relationship name="ForeignKeyColumns" type="multiple" relatedClass="DBForeignKeyColumn" reverseRelationship="ForeignKey" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="ForeignKeyID" relatedProperty="ForeignKeyID" />
    </relationship>
    <relationship name="ParentTable" type="single" relatedClass="DBTable" reverseRelationship="ForeignKeys" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ParentTableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="RelatedTable" type="single" relatedClass="DBTable" reverseRelationship="RelatedForeignKeys" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="RelatedTableID" relatedProperty="TableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Foreign Key Name" property="ForeignKeyName" />
        <column heading="Related Table" property="RelatedTableID" />
      </grid>
      <form>
        <field label="Foreign Key Name:" property="ForeignKeyName" />
        <field label="Related Table Info:" property="RelatedTableID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DBForeignKeyColumn" assembly="FireStarterModeller.BO" displayName="DB Foreign Key Column">
    <property name="ForeignKeyColumnID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ForeignKeyID" type="Guid" />
    <property name="ParentColumnID" type="Guid">
      <businessObjectLookupList class="DBColumn" assembly="FireStarterModeller.BO" />
    </property>
    <property name="RelatedColumnID" type="Guid">
      <businessObjectLookupList class="DBColumn" assembly="FireStarterModeller.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey>
      <prop name="ForeignKeyColumnID" />
    </primaryKey>
    <relationship name="ForeignKey" type="single" relatedClass="DBForeignKey" reverseRelationship="ForeignKeyColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ForeignKeyID" relatedProperty="ForeignKeyID" />
    </relationship>
    <relationship name="ParentColumn" type="single" relatedClass="DBColumn" reverseRelationship="ForeignKeyColumnsAsParentColumn" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ParentColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="RelatedColumn" type="single" relatedClass="DBColumn" reverseRelationship="ForeignKeyColumnsAsRelatedColumn" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="RelatedColumnID" relatedProperty="ColumnID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Parent Column Info" property="ParentColumnID" />
        <column heading="Related Column Info" property="RelatedColumnID" />
      </grid>
      <form>
        <field label="Parent Column Info:" property="ParentColumnID" type="ComboBox" />
        <field label="Related Column Info:" property="RelatedColumnID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DBKey" assembly="FireStarterModeller.BO" displayName="DB Key">
    <property name="KeyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="KeyName" />
    <property name="TableID" type="Guid">
      <businessObjectLookupList class="DBTable" assembly="FireStarterModeller.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey>
      <prop name="KeyID" />
    </primaryKey>
    <relationship name="KeyColumns" type="multiple" relatedClass="DBKeyColumn" reverseRelationship="Key" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="KeyID" relatedProperty="KeyID" />
    </relationship>
    <relationship name="Table" type="single" relatedClass="DBTable" reverseRelationship="Keys" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Key Name" property="KeyName" />
      </grid>
      <form>
        <field label="Key Name:" property="KeyName" />
      </form>
    </ui>
  </class>
  <class name="DBKeyColumn" assembly="FireStarterModeller.BO" displayName="DB Key Column">
    <property name="ColumnID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBColumn" assembly="FireStarterModeller.BO" />
    </property>
    <property name="KeyID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBKey" assembly="FireStarterModeller.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey isObjectID="false">
      <prop name="ColumnID" />
      <prop name="KeyID" />
    </primaryKey>
    <relationship name="Column" type="single" relatedClass="DBColumn" reverseRelationship="KeyColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="Key" type="single" relatedClass="DBKey" reverseRelationship="KeyColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="KeyID" relatedProperty="KeyID" />
    </relationship>
  </class>
  <class name="DBPrimaryKey" assembly="FireStarterModeller.BO" displayName="DB Primary Key">
    <property name="PrimaryKeyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="TableID" type="Guid" />
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey>
      <prop name="PrimaryKeyID" />
    </primaryKey>
    <relationship name="PrimaryKeyColumns" type="multiple" relatedClass="DBPrimaryKeyColumn" reverseRelationship="PrimaryKeyDB" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="PrimaryKeyID" relatedProperty="PrimaryKeyID" />
    </relationship>
    <relationship name="Table" type="single" relatedClass="DBTable" reverseRelationship="PrimaryKeyDB" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
  </class>
  <class name="DBPrimaryKeyColumn" assembly="FireStarterModeller.BO" displayName="DB Primary Key Column">
    <property name="PrimaryKeyID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBPrimaryKey" assembly="FireStarterModeller.BO" />
    </property>
    <property name="ColumnID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DBColumn" assembly="FireStarterModeller.BO" />
    </property>
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <primaryKey isObjectID="false">
      <prop name="ColumnID" />
      <prop name="PrimaryKeyID" />
    </primaryKey>
    <relationship name="Column" type="single" relatedClass="DBColumn" reverseRelationship="PrimaryKeyColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ColumnID" relatedProperty="ColumnID" />
    </relationship>
    <relationship name="PrimaryKeyDB" type="single" relatedClass="DBPrimaryKey" reverseRelationship="PrimaryKeyColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PrimaryKeyID" relatedProperty="PrimaryKeyID" />
    </relationship>
  </class>
  <class name="DBTable" assembly="FireStarterModeller.BO" displayName="TableInfo">
    <property name="DateCreated" type="DateTime" />
    <property name="Owner" />
    <property name="TableNameDB" compulsory="true" displayName="Table Name">
      <rule name="TableName">
        <add key="maxLength" value="255" />
        <add key="minLength" value="1" />
      </rule>
    </property>
    <property name="TableID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="TableID" />
    <property name="DatabaseID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="DatabaseID" />
    <property name="TableType" />
    <property name="TableComment" />
    <property name="CreateTime" type="DateTime" />
    <property name="UpdateTime" type="DateTime" />
    <property name="PendingChangeType" type="FireStarterModeller.BO.ChangeType" assembly="FireStarterModeller.BO" default="None" />
    <property name="Approved" type="Boolean" />
    <key name="AK1">
      <prop name="DatabaseID" />
      <prop name="TableNameDB" />
    </key>
    <primaryKey>
      <prop name="TableID" />
    </primaryKey>
    <relationship name="Columns" type="multiple" relatedClass="DBColumn" reverseRelationship="Table" relatedAssembly="FireStarterModeller.BO" keepReference="false" relationshipType="Aggregation">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="Database" type="single" relatedClass="DBDatabase" reverseRelationship="Tables" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="DatabaseID" relatedProperty="DatabaseID" />
    </relationship>
    <relationship name="ForeignKeys" type="multiple" relatedClass="DBForeignKey" reverseRelationship="ParentTable" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="TableID" relatedProperty="ParentTableID" />
    </relationship>
    <relationship name="Keys" type="multiple" relatedClass="DBKey" reverseRelationship="Table" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="MappedDMClass" type="single" relatedClass="DMClass" reverseRelationship="MappedTable" relatedAssembly="FireStarterModeller.BO" owningBOHasForeignKey="false">
      <relatedProperty property="TableID" relatedProperty="MappedTableID" />
    </relationship>
    <relationship name="PrimaryKeyDB" type="single" relatedClass="DBPrimaryKey" reverseRelationship="Table" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation" owningBOHasForeignKey="false">
      <relatedProperty property="TableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="RelatedForeignKeys" type="multiple" relatedClass="DBForeignKey" reverseRelationship="RelatedTable" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="TableID" relatedProperty="RelatedTableID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Table Name" property="TableNameDB" />
        <column heading="Owner" property="Owner" />
        <column heading="Table Type" property="TableType" />
        <column heading="Table Comment" property="TableComment" />
        <column heading="Create Time" property="CreateTime" />
        <column heading="Date Created" property="DateCreated" />
        <column heading="Update Time" property="UpdateTime" />
        <column heading="Pending Change Type" property="PendingChangeType" />
      </grid>
      <form>
        <field label="Table Name: *" property="TableNameDB" />
        <field label="Owner:" property="Owner" />
        <field label="Table Type:" property="TableType" />
        <field label="Table Comment:" property="TableComment" />
        <field label="Create Time:" property="CreateTime" type="DateTimePicker" />
        <field label="Date Created:" property="DateCreated" type="DateTimePicker" />
        <field label="Update Time:" property="UpdateTime" type="DateTimePicker" />
        <field label="Pending Change Type:" property="PendingChangeType" />
      </form>
    </ui>
  </class>
  <class name="DMAssembly" assembly="FireStarterModeller.BO" displayName="Module">
    <property name="AssemblyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true">
      <rule name="Name">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^[a-zA-Z]{1}([a-zA-Z0-9_.]+)$" />
      </rule>
    </property>
    <property name="SolutionID" type="Guid" compulsory="true" displayName="Solution ID">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Description" description="The full description of the Assembly.">
      <rule name="Description">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_ &amp;'`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <key name="AK1">
      <prop name="Name" />
      <prop name="SolutionID" />
    </key>
    <primaryKey>
      <prop name="AssemblyID" />
    </primaryKey>
    <relationship name="Entities" type="multiple" relatedClass="DMClass" reverseRelationship="Assembly" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation" orderBy="ClassNameBO">
      <relatedProperty property="AssemblyID" relatedProperty="AssemblyID" />
    </relationship>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="Modules" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="Solution_DefaultAssembly" type="single" relatedClass="DMSolution" reverseRelationship="DefaultAssembly" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" owningBOHasForeignKey="false">
      <relatedProperty property="AssemblyID" relatedProperty="DefaultAssemblyID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" />
      </grid>
      <form>
        <field label="Solution: *" property="SolutionID" editable="false" />
        <field label="Name: * *" property="Name" />
        <field label="Description:" property="Description" />
      </form>
    </ui>
  </class>
  <class name="DMClass" assembly="FireStarterModeller.BO" displayName="Entity">
    <property name="ClassID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="BusinessObjectID" />
    <property name="ClassNameBO" compulsory="true" displayName="Entity Name" description="The name of the Business object e.g. Person, Organisation, Invoice">
      <rule name="BusinessObjectName">
        <add key="maxLength" value="100" />
        <add key="minLength" value="1" />
        <add key="patternMatch" value="^[a-zA-Z]{1}([a-zA-Z0-9_]+)$" />
      </rule>
    </property>
    <property name="MappedTableName" compulsory="true" description="The Table Name of the Table that this class is mapped to" />
    <property name="AssemblyID" type="Guid" compulsory="true" displayName="Module">
      <businessObjectLookupList class="DMAssembly" assembly="FireStarterModeller.BO" />
    </property>
    <property name="DisplayName" description="The human readable name that is used in error messages, documentation and help." />
    <property name="Generated" type="Boolean" default="false" description="Whether the DMClass has been generated before or not." />
    <property name="SuperClassID" type="Guid" displayName="SuperClassID" description="The super class of this DmClass" />
    <property name="MappedTableID" type="Guid" displayName="Mapped Table Info" />
    <property name="ClassDescription" description="A full description of this Domain Class. This is used in documention and help files.">
      <rule name="ClassDescription">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <key name="AK1">
      <prop name="AssemblyID" />
      <prop name="ClassNameBO" />
    </key>
    <primaryKey>
      <prop name="ClassID" />
    </primaryKey>
    <relationship name="Assembly" type="single" relatedClass="DMAssembly" reverseRelationship="Entities" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="AssemblyID" relatedProperty="AssemblyID" />
    </relationship>
    <relationship name="MappedTable" type="single" relatedClass="DBTable" reverseRelationship="MappedDMClass" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="MappedTableID" relatedProperty="TableID" />
    </relationship>
    <relationship name="ObjectIdentity" type="single" relatedClass="DMObjectIdentity" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="OwnerRelationships" type="multiple" relatedClass="DMRelationship" reverseRelationship="OwnerClass" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="ClassID" relatedProperty="OwnerClassID" />
    </relationship>
    <relationship name="Properties" type="multiple" relatedClass="DMProperty" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition ASC">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="RelatedRelationships" type="multiple" relatedClass="DMRelationship" reverseRelationship="RelatedClass" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="ClassID" relatedProperty="RelatedClassID" />
    </relationship>
    <relationship name="SubClasses" type="multiple" relatedClass="DMSuperClass" reverseRelationship="SuperClassClass" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ClassID" relatedProperty="SuperClassClassID" />
    </relationship>
    <relationship name="SuperClass" type="single" relatedClass="DMSuperClass" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SuperClassID" relatedProperty="SuperClassID" />
    </relationship>
    <relationship name="UIViews" type="multiple" relatedClass="UIView" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="UniqueConstraints" type="multiple" relatedClass="DMUniqueConstraint" reverseRelationship="Class" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <ui name="ComboLookup">
      <grid>
        <column heading="Class I D" property="ClassID" />
        <column heading="Class Name B O" property="ClassNameBO" />
      </grid>
    </ui>
    <ui>
      <grid>
        <column heading="Entity Name" property="ClassNameBO" width="200" />
      </grid>
      <form>
        <field label="Module : *" property="AssemblyID" type="ComboBox" />
        <field label="Entity Name: *" property="ClassNameBO" />
        <field label="Display Name:" property="DisplayName" />
        <field label="Description:" property="ClassDescription">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMListItem" assembly="FireStarterModeller.BO" displayName="DM List Item">
    <property name="ListItemID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Value" compulsory="true" description="The Key value that is stored in the property for this lookup list item" />
    <property name="Display" compulsory="true" description="The Display value that is stored in the property for this lookup list item" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this item been generated before or is it new." />
    <property name="SimpleLookupListID" type="Guid" compulsory="true" description="The simple lookup list that this list is for" />
    <property name="Description" description="A full description of this Lookup List item. This is used primarily for documentation. I.e. the screen help and documentation for the Lookup Item will be based on this description ">
      <rule name="Description">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp;'`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <primaryKey>
      <prop name="ListItemID" />
    </primaryKey>
    <relationship name="LookupListSimple" type="single" relatedClass="DMLookupListSimple" reverseRelationship="ListItems" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SimpleLookupListID" relatedProperty="SimpleLookupListID" />
    </relationship>
  </class>
  <class name="DMLookupList" assembly="FireStarterModeller.BO" displayName="DM Lookup List">
    <property name="LookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <primaryKey>
      <prop name="LookupListID" />
    </primaryKey>
  </class>
  <class name="DMLookupListBusinessObject" assembly="FireStarterModeller.BO" displayName="DM Business Object Lookup List">
    <superClass class="DMLookupList" assembly="FireStarterModeller.BO" />
    <property name="BusinessObjectLookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="LookupClassName" compulsory="true" />
    <property name="Assembly" compulsory="true" />
    <property name="Criteria" />
    <property name="Sort" />
    <primaryKey>
      <prop name="BusinessObjectLookupListID" />
    </primaryKey>
  </class>
  <class name="DMLookupListDatabase" assembly="FireStarterModeller.BO" displayName="DM Database Lookup List">
    <superClass class="DMLookupList" assembly="FireStarterModeller.BO" />
    <property name="DatabaseLookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Sql" compulsory="true" />
    <property name="TimeOut" type="Decimal" default="10000" compulsory="true" />
    <property name="LookupClassName" compulsory="true" />
    <property name="Assembly" compulsory="true" />
    <primaryKey>
      <prop name="DatabaseLookupListID" />
    </primaryKey>
  </class>
  <class name="DMLookupListSimple" assembly="FireStarterModeller.BO" displayName="Simple Lookup List">
    <superClass class="DMLookupList" assembly="FireStarterModeller.BO" />
    <property name="SimpleLookupListID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <primaryKey>
      <prop name="SimpleLookupListID" />
    </primaryKey>
    <relationship name="ListItems" type="multiple" relatedClass="DMListItem" reverseRelationship="LookupListSimple" relatedAssembly="FireStarterModeller.BO" relationshipType="Composition">
      <relatedProperty property="SimpleLookupListID" relatedProperty="SimpleLookupListID" />
    </relationship>
  </class>
  <class name="DMObjectIdentity" assembly="FireStarterModeller.BO" displayName="DM Object Identity">
    <property name="ObjectIdentityID" type="Guid" readWriteRule="WriteNew" databaseField="KeyID" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true" />
    <property name="IsObjectID" type="Boolean" default="True" compulsory="true" />
    <property name="Generated" type="Boolean" default="false" compulsory="true" />
    <property name="MappedPrimaryKeyID" type="Guid" displayName="Mapped Primary Key ID" />
    <primaryKey>
      <prop name="ObjectIdentityID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="ObjectIdentity" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="Properties" type="multiple" relatedClass="DMProperty" reverseRelationship="ObjectIdentity" relatedAssembly="FireStarterModeller.BO" deleteAction="DereferenceRelated">
      <relatedProperty property="ObjectIdentityID" relatedProperty="ObjectIdentityID" />
    </relationship>
  </class>
  <class name="DMProperty" assembly="FireStarterModeller.BO" displayName="DM Property">
    <property name="PropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Property ID" />
    <property name="PropertyName" compulsory="true" description="The Unique name that identifies this property">
      <rule name="PropertyName">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^[a-zA-Z]{1}([a-zA-Z0-9_]+)$" />
      </rule>
    </property>
    <property name="ReadWriteRule" type="PropReadWriteRule" assembly="Habanero.Base" default="ReadWrite" description="The Rule controlling the ReadWrite Behaviour of this Property">
      <simpleLookupList>
        <item display="ReadOnly" value="ReadOnly" />
        <item display="ReadWrite" value="ReadWrite" />
        <item display="WriteNew" value="WriteNew" />
        <item display="WriteNotNew" value="WriteNotNew" />
        <item display="WriteOnce" value="WriteOnce" />
      </simpleLookupList>
    </property>
    <property name="MappedDBColumnName" displayName="DB Column Name" description="The Name of the DBColumn that this Property is mapped to." />
    <property name="Description" description="A full description of this DMProperty. This is used both for documentaiton as well as for generating the default tooltip text  used for this property.">
      <rule name="Description">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <property name="Compulsory" type="Boolean" default="False" description="Is this property compulsory or not. If the property is compulsory then the Business Object cannot be saved unless the value for this is set." />
    <property name="AutoIncrementing" type="Boolean" default="False" description="Is this property auto incrementing. This is the situation where a property is mapped to an autoincrementing field in the database." />
    <property name="Length" type="Int32" />
    <property name="KeepValuePrivate" type="Boolean" default="False" description="Must the value be kept private i.e. if an error message is raised then the actual value stored in this property will not be shown to the user." />
    <property name="DisplayName" description="The display name this is the human friendly name that will be used as the default display name in user interfaces and error messages" />
    <property name="Default" description="The default value for this property. This is the value that the property will be set to when the object is created." />
    <property name="ClassID" type="Guid" compulsory="true" description="The Domain model Class that this Property is for." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this property been previously generated or not" />
    <property name="ObjectIdentityID" type="Guid" displayName="ObjectIdentityID" description="Is this property the Objects Identity Property. The Objects Identity property is typically a Guid that is not mutable i.e. it can never be modified after it is set the first time." />
    <property name="LookupListID" type="Guid" description="The lookup list that is used as a set of options that can be used as the value of this property" />
    <property name="PropertyTypeID" type="Guid" compulsory="true" displayName="Property Type" description="The type of property for this property e.g. String, Decimal">
      <businessObjectLookupList class="DMPropertyType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="MappedDBColumnID" type="Guid" displayName="MappedDBColumnID" description="The Database Column that this property is mapped to." />
    <property name="OrdinalPosition" type="Int32" compulsory="true" description="The order that this property is shown in the list of properties. This is the default order that the property will be displayed in a grid or form." />
    <property name="DefaultPropRuleID" type="Guid" compulsory="false" displayName="Default Prop Rule ID" description="This is the simple property rule that is used for the property this rule is used for limiting string lengths pattern matches etc" />
    <key name="AK1">
      <prop name="ClassID" />
      <prop name="PropertyName" />
    </key>
    <primaryKey>
      <prop name="PropertyID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="Properties" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="DefaultPropRule" type="single" relatedClass="DMPropRule" reverseRelationship="DMProperty" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing" relationshipType="Composition">
      <relatedProperty property="DefaultPropRuleID" relatedProperty="PropRuleID" />
    </relationship>
    <relationship name="DMUniqueConstraintProperties" type="multiple" relatedClass="DMUniqueConstraintProperty" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="LookupList" type="single" relatedClass="DMLookupList" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="LookupListID" relatedProperty="LookupListID" />
    </relationship>
    <relationship name="ObjectIdentity" type="single" relatedClass="DMObjectIdentity" reverseRelationship="Properties" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ObjectIdentityID" relatedProperty="ObjectIdentityID" />
    </relationship>
    <relationship name="PropertyType" type="single" relatedClass="DMPropertyType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyTypeID" relatedProperty="PropertyTypeID" />
    </relationship>
    <relationship name="PropRules" type="multiple" relatedClass="DMPropRule" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIGridColumnInfos" type="multiple" relatedClass="UIGridColumnInfo" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIGridFilterProps" type="multiple" relatedClass="UIGridFilterProp" reverseRelationship="Property" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <ui name="ComboLookup">
      <grid>
        <column heading="Property I D" property="PropertyID" />
        <column heading="Property Name" property="PropertyName" />
      </grid>
    </ui>
    <ui>
      <grid>
        <column heading="Property Name" property="PropertyName" width="250" />
        <column heading="PK" property="-IsObjectIdentity-" type="DataGridViewCheckBoxColumn" editable="false" width="30" />
        <column heading="Order" property="OrdinalPosition" width="0" />
      </grid>
      <form>
        <field label="Property Name: *" property="PropertyName" />
        <field label="Property Type: * *" property="PropertyTypeID" type="ComboBox" />
        <field label="Display Name:" property="DisplayName" />
        <field label="Default:" property="Default" />
        <field label="Read Write Rule:" property="ReadWriteRule" type="ComboBox" />
        <field label="Compulsory?" property="Compulsory" type="CheckBox" />
        <field label="Description:" property="Description">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMPropertyType" assembly="FireStarterModeller.BO" displayName="DM Property Type">
    <property name="PropertyTypeName" readWriteRule="WriteNew" compulsory="true" />
    <property name="AssemblyName" readWriteRule="WriteNew" compulsory="true" description="The assembly name for this Property Type e.g. System" />
    <property name="PropertyTypeID" type="Guid" readWriteRule="WriteNew" displayName="Property Type ID" description="The Guid Uniquely Identifying this Property Type" />
    <property name="SolutionID" type="Guid" displayName="SolutionID" description="The Solution that this PropertyType belongs to. Although many property types are generic e.g. String some will be specific to a solution.">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="PropertyTypeName" />
      <prop name="SolutionID" />
    </key>
    <primaryKey>
      <prop name="PropertyTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="PropertyTypes" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Assembly Name" property="AssemblyName" />
        <column heading="Property Type Name" property="PropertyTypeName" />
      </grid>
      <form>
        <field label="Assembly Name: *" property="AssemblyName" />
        <field label="Property Type Name: *" property="PropertyTypeName" />
      </form>
    </ui>
  </class>
  <class name="DMPropRule" assembly="FireStarterModeller.BO" displayName="DM Prop Rule">
    <property name="PropRuleID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="PropRuleID" />
    <property name="PropRuleName" compulsory="true" />
    <property name="Message" />
    <property name="Class" />
    <property name="Assembly" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="PropertyID" type="Guid" compulsory="true" />
    <primaryKey>
      <prop name="PropRuleID" />
    </primaryKey>
    <relationship name="DMProperty" type="single" relatedClass="DMProperty" reverseRelationship="DefaultPropRule" relatedAssembly="FireStarterModeller.BO" owningBOHasForeignKey="false">
      <relatedProperty property="PropRuleID" relatedProperty="DefaultPropRuleID" />
    </relationship>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="PropRules" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="PropRuleParameters" type="multiple" relatedClass="DMPropRuleParameter" reverseRelationship="PropRule" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition ASC">
      <relatedProperty property="PropRuleID" relatedProperty="PropRuleID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Prop Rule Name" property="PropRuleName" />
      </grid>
      <form>
        <field label="Message:" property="Message" />
      </form>
    </ui>
  </class>
  <class name="DMPropRuleParameter" assembly="FireStarterModeller.BO" displayName="DM Prop Rule Parameter">
    <property name="PropRuleParameterID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="RuleID" type="Guid" />
    <property name="Key" compulsory="true" description="The key portion of the Parameter e.g. minLength" />
    <property name="Value" description="The value portion of the Prop Rule e.g. the value for min length." />
    <property name="PropRuleID" type="Guid" compulsory="true" description="The Property Rule that this Parameter is for." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="OrdinalPosition" type="Int32" compulsory="true" description="The Ordinal Position that the Property is shown in in the property editor grid." />
    <primaryKey>
      <prop name="PropRuleParameterID" />
    </primaryKey>
    <relationship name="PropRule" type="single" relatedClass="DMPropRule" reverseRelationship="PropRuleParameters" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropRuleID" relatedProperty="PropRuleID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Key" property="Key" editable="false" width="130" />
        <column heading="Value" property="Value" />
      </grid>
      <form>
        <field label="Key: *" property="Key" editable="false" />
        <field label="Value: * *" property="Value" />
      </form>
    </ui>
  </class>
  <class name="DMRelationship" assembly="FireStarterModeller.BO" displayName="DM Relationship">
    <property name="RelationshipID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="RelationshipID" />
    <property name="OwnerClassID" type="Guid" compulsory="true" description="The Business Object that owns this relationship">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <property name="RelationshipName" compulsory="true" description="The unique name for this relationship">
      <rule name="RelationshipName">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^[a-zA-Z]{1}([a-zA-Z0-9_]+)$" />
      </rule>
    </property>
    <property name="Cardinality" type="FireStarterModeller.BO.Cardinality" assembly="FireStarterModeller.BO" default="Single" compulsory="true" description="The cardinality of the relationship i.e. Wether there can be many or only one related Business Object">
      <simpleLookupList>
        <item display="Single" value="Single" />
        <item display="Multiple" value="Multiple" />
      </simpleLookupList>
    </property>
    <property name="RelatedClassID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Related Business Object" description="The Related Class that this relationship is for.">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <property name="KeepReference" type="Boolean" default="True" description="Must a reference be held to this Relationship or must it be reloaded fresh from the database each time" />
    <property name="OrderBy" description="If this relationship is a multiple relationship then must it be loaded in a specific order" />
    <property name="DeleteAction" default="Prevent" compulsory="true" description="What action must be undertaken when the Owning Business Object is deleted if there are related Business Objects. Delete Related - delete all related Objects when the parent is deleted, Dereference Related - Dereference all related business objects when the owning business object is deleted. Prevent Delete - Prevent the deletion of the Owning Business Object if there are any related Business Objects. Do Nothing - Let the DataStore or some other code sort it out.">
      <simpleLookupList>
        <item display="Delete Related" value="DeleteRelated" />
        <item display="Dereference Related" value="DereferenceRelated" />
        <item display="Prevent Delete" value="Prevent" />
        <item display="Do Nothing " value="DoNothing " />
      </simpleLookupList>
    </property>
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="RelationshipType" type="RelationshipType" assembly="Habanero.Base" default="Association" description="What type of relationship exists between the Business Objects. i.e. Association, Aggregation or Composition.">
      <simpleLookupList>
        <item display="Association" value="Association" />
        <item display="Aggregation" value="Aggregation" />
        <item display="Composition" value="Composition" />
      </simpleLookupList>
    </property>
    <property name="MappedForeignKeyID" type="Guid" displayName="Mapped Foreign Key ID" description="What is the foreign key in the DB schema that this relationship has been created for." />
    <property name="RelationshipDescription" description="A description of the relationship and in the context of the business domain">
      <rule name="RelationshipDescription">
        <add key="maxLength" value="-1" />
        <add key="minLength" value="0" />
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <primaryKey>
      <prop name="RelationshipID" />
    </primaryKey>
    <relationship name="OwnerClass" type="single" relatedClass="DMClass" reverseRelationship="OwnerRelationships" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="OwnerClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="RelatedClass" type="single" relatedClass="DMClass" reverseRelationship="RelatedRelationships" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="RelatedClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="RelationshipProperties" type="multiple" relatedClass="DMRelationshipProperty" reverseRelationship="Relationship" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="RelationshipID" relatedProperty="RelationshipID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Relationship Name" property="RelationshipName" width="200" />
        <column heading="Related Entity" property="RelatedClassID" type="DataGridViewComboBoxColumn" />
      </grid>
      <form>
        <field label="Related Entity: *" property="RelatedClassID" type="ComboBox" />
        <field label="Cardinality: *" property="Cardinality" type="ComboBox" />
        <field label="Relationship Name: *" property="RelationshipName" />
        <field label="Delete Action: *" property="DeleteAction" type="ComboBox" />
        <field label="Order By:" property="OrderBy" />
        <field label="Relationship Type:" property="RelationshipType" type="ComboBox" />
        <field label="Relationship Description:" property="RelationshipDescription">
          <parameter name="numLines" value="2" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMRelationshipProperty" assembly="FireStarterModeller.BO" displayName="DM Relationship Property">
    <property name="RelationshipPropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Related Property" />
    <property name="RelatedPropertyID" type="Guid" compulsory="true" displayName="Related Property" description="The Property From the Related Business Object of this relationship that defines the Relationship." />
    <property name="OwnerPropertyID" type="Guid" compulsory="true" displayName="Owner Property" description="The Property of the Owning class for this Business Object that defines the properties that relate the Business Objects." />
    <property name="RelationshipID" type="Guid" compulsory="true" description="The Relationship that owns this RelatedProperty">
      <businessObjectLookupList class="DMRelationship" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this Realtionship Property been previously generated or not" />
    <key>
      <prop name="RelatedPropertyID" />
      <prop name="RelationshipID" />
    </key>
    <key>
      <prop name="OwnerPropertyID" />
      <prop name="RelationshipID" />
    </key>
    <primaryKey>
      <prop name="RelationshipPropertyID" />
    </primaryKey>
    <relationship name="OwnerProperty" type="single" relatedClass="DMProperty" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="OwnerPropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="RelatedProperty" type="single" relatedClass="DMProperty" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="RelatedPropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="Relationship" type="single" relatedClass="DMRelationship" reverseRelationship="RelationshipProperties" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="RelationshipID" relatedProperty="RelationshipID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property" property="OwnerPropertyID" type="DataGridViewComboBoxColumn" width="140" />
        <column heading="Related Property" property="RelatedPropertyID" type="DataGridViewComboBoxColumn" width="140" />
      </grid>
      <form>
        <field label="Property Info: *" property="OwnerPropertyID" type="ComboBox" />
        <field label="Related Property: *" property="RelatedPropertyID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DMSolution" assembly="FireStarterModeller.BO" displayName="DM Solution">
    <property name="SolutionID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="SolutionID" />
    <property name="SolutionName" compulsory="true">
      <rule name="ProjectName">
        <add key="maxLength" value="100" />
        <add key="minLength" value="2" />
      </rule>
    </property>
    <property name="DefaultAssemblyID" type="Guid" compulsory="true" displayName="Default Assembly ID" />
    <property name="HabaneroDllPath" />
    <property name="TableNamePrefix" />
    <property name="TableNameSuffix" />
    <property name="PascalCase" type="Boolean" default="True" />
    <property name="SolutionDirectory" compulsory="true" />
    <property name="UIProjectName" displayName="UI Project Name" />
    <property name="BOProjectName" displayName="BO Project Name" />
    <property name="LogicProjectName" />
    <property name="BaseProjectName" />
    <property name="Generated" type="Boolean" default="False" />
    <property name="BOTestProjectName" displayName="BO Test Project Name" />
    <property name="UITestProjectName" displayName="UI Test Project Name" />
    <property name="SolutionDescription" description="A full description of the Solution" />
    <key name="AK1">
      <prop name="SolutionName" />
    </key>
    <primaryKey>
      <prop name="SolutionID" />
    </primaryKey>
    <relationship name="DefaultAssembly" type="single" relatedClass="DMAssembly" reverseRelationship="Solution_DefaultAssembly" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="DefaultAssemblyID" relatedProperty="AssemblyID" />
    </relationship>
    <relationship name="Modules" type="multiple" relatedClass="DMAssembly" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation" orderBy="Name">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="PropertyTypes" type="multiple" relatedClass="DMPropertyType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIControlMapperTypes" type="multiple" relatedClass="UIControlMapperType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIControlTypes" type="multiple" relatedClass="UIControlType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIFilterControlTypes" type="multiple" relatedClass="UITypeDefinition" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIGridColumnControlTypes" type="multiple" relatedClass="UIGridColumnControlType" reverseRelationship="Solution" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Solution Name" property="SolutionName" />
      </grid>
      <form>
        <field label="Base Project Name:" property="BaseProjectName" />
        <field label="B O Project Name:" property="BOProjectName" />
        <field label="B O Test Project Name:" property="BOTestProjectName" />
        <field label="Default Assembly I D: *" property="DefaultAssemblyID" />
        <field label="Generated?" property="Generated" type="CheckBox" />
        <field label="Habanero Dll Path:" property="HabaneroDllPath" />
        <field label="Logic Project Name:" property="LogicProjectName" />
        <field label="Pascal Case?" property="PascalCase" type="CheckBox" />
        <field label="Solution Description:" property="SolutionDescription" />
        <field label="Solution Directory: *" property="SolutionDirectory" />
        <field label="Solution Name: *" property="SolutionName" />
        <field label="Table Name Prefix:" property="TableNamePrefix" />
        <field label="Table Name Suffix:" property="TableNameSuffix" />
        <field label="U I Project Name:" property="UIProjectName" />
        <field label="U I Test Project Name:" property="UITestProjectName" />
      </form>
    </ui>
  </class>
  <class name="DMSuperClass" assembly="FireStarterModeller.BO" displayName="DM Super Class">
    <property name="SuperClassID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="SuperClassID" />
    <property name="SuperClassClassID" type="Guid" compulsory="true" displayName="Super Class Class">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Identity" displayName="ID" />
    <property name="Discriminator" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="InheritanceType" type="Habanero.BO.ClassDefinition.ORMapping" assembly="Habanero.BO" default="ClassTableInheritance" displayName="OR Mapping">
      <simpleLookupList>
        <item display="ClassTableInheritance" value="ClassTableInheritance" />
        <item display="SingleTableInheritance" value="SingleTableInheritance" />
        <item display="ConcreteTableInheritance" value="ConcreteTableInheritance" />
      </simpleLookupList>
    </property>
    <primaryKey>
      <prop name="SuperClassID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="SuperClass" relatedAssembly="FireStarterModeller.BO" owningBOHasForeignKey="false">
      <relatedProperty property="SuperClassID" relatedProperty="SuperClassID" />
    </relationship>
    <relationship name="SuperClassClass" type="single" relatedClass="DMClass" reverseRelationship="SubClasses" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SuperClassClassID" relatedProperty="ClassID" />
    </relationship>
    <ui>
      <form>
        <field label="Super Class: * *" property="SuperClassClassID" type="ComboBox" mapperType="SuperClassLookupComboBoxMapper" mapperAssembly="FireStarterModeller.UI" />
        <field label="OR Mapping:" property="InheritanceType" type="ComboBox" />
        <field label="Discriminator:" property="Discriminator" type="ComboBox" />
        <field label="ID:" property="Identity" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="DMUniqueConstraint" assembly="FireStarterModeller.BO" displayName="DM Unique Constraint">
    <property name="UniqueConstraintID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true" displayName="Class ID" description="The class that this unique constraint is for">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Message" description="The message that should be displayed if this constraint test fails. If this is null then a standard message will be shown.">
      <rule name="Message">
        <add key="patternMatch" value="^([a-zA-Z0-9-_&amp; '`.,)(/ %*?;!@]+)$" />
      </rule>
    </property>
    <property name="IgnoreIfNull" type="Boolean" default="True" compulsory="true" description="Ingore this unique constraint if one or more of the Properties that make it up are null" />
    <property name="UniqueConstraintName" compulsory="true" description="The name of the Unique Constraint" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this constraint ever been generated before" />
    <property name="MappedAlternateKeyID" type="Guid" displayName="Mapped Alternate Key ID" description="What is the database alternate key that this unique constraint is mapped to." />
    <primaryKey>
      <prop name="UniqueConstraintID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="UniqueConstraints" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="UniqueConstraintProperties" type="multiple" relatedClass="DMUniqueConstraintProperty" reverseRelationship="UniqueConstraint" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UniqueConstraintID" relatedProperty="UniqueConstraintID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Constraint Name" property="UniqueConstraintName" width="140" />
        <column heading="Message" property="Message" width="150" />
      </grid>
      <form>
        <field label="Constraint Name: *" property="UniqueConstraintName" />
        <field label="Ignore If Null? *" property="IgnoreIfNull" type="CheckBox" />
        <field label="Message:" property="Message">
          <parameter name="numLines" value="4" />
        </field>
      </form>
    </ui>
  </class>
  <class name="DMUniqueConstraintProperty" assembly="FireStarterModeller.BO" displayName="Unique Constraint Property">
    <property name="UniqueConstraintPropertyID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="PropertyID" type="Guid" compulsory="true" displayName="Property" />
    <property name="UniqueConstraintID" type="Guid" compulsory="true">
      <businessObjectLookupList class="DMUniqueConstraint" assembly="FireStarterModeller.BO" />
    </property>
    <key>
      <prop name="PropertyID" />
      <prop name="UniqueConstraintID" />
    </key>
    <primaryKey>
      <prop name="UniqueConstraintPropertyID" />
    </primaryKey>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="DMUniqueConstraintProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UniqueConstraint" type="single" relatedClass="DMUniqueConstraint" reverseRelationship="UniqueConstraintProperties" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UniqueConstraintID" relatedProperty="UniqueConstraintID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property" property="PropertyID" type="DataGridViewComboBoxColumn" width="330" />
      </grid>
      <form>
        <field label="Property: *" property="PropertyID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="ModelModification" assembly="FireStarterModeller.BO" displayName="Model Modification">
    <property name="ModelModificationID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Description" />
    <property name="ReverseEngineeringID" type="Guid">
      <businessObjectLookupList class="ReverseEngineering" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Approved" type="Boolean" default="true" />
    <primaryKey>
      <prop name="ModelModificationID" />
    </primaryKey>
    <relationship name="ReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="ModelModifications" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ReverseEngineeringID" relatedProperty="ReverseEngineeringID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Approved" property="Approved" width="80" />
        <column heading="Description" property="Description" editable="false" width="400" />
      </grid>
    </ui>
  </class>
  <class name="ReverseEngineering" assembly="FireStarterModeller.BO" displayName="Reverse Engineering">
    <property name="ReverseEngineeringID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="DatabaseConnectionID" type="Guid" />
    <property name="StoredDatabaseID" type="Guid" />
    <property name="ReverseEngineeringSettingsID" type="Guid" />
    <primaryKey>
      <prop name="ReverseEngineeringID" />
    </primaryKey>
    <relationship name="DatabaseConnectionInfo" type="single" relatedClass="DatabaseConnectionInfo" reverseRelationship="ReverseEngineeringsUsingThisConnection" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="DatabaseConnectionID" relatedProperty="DatabaseConnectionID" />
    </relationship>
    <relationship name="ModelModifications" type="multiple" relatedClass="ModelModification" reverseRelationship="ReverseEngineering" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="ReverseEngineeringID" relatedProperty="ReverseEngineeringID" />
    </relationship>
    <relationship name="ReverseEngineeringSettings" type="single" relatedClass="ReverseEngineeringSettings" reverseRelationship="ReverseEngineering" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="ReverseEngineeringSettingsID" relatedProperty="ReverseEngineeringSettingsID" />
    </relationship>
    <relationship name="StoredDatabase" type="single" relatedClass="DBDatabase" reverseRelationship="StoredByReverseEngineering" relatedAssembly="FireStarterModeller.BO" relationshipType="Aggregation">
      <relatedProperty property="StoredDatabaseID" relatedProperty="DatabaseID" />
    </relationship>
  </class>
  <class name="ReverseEngineeringSettings" assembly="FireStarterModeller.BO" displayName="Reverse Engineering Settings">
    <property name="ReverseEngineeringSettingsID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ImportTables" type="Boolean" default="True" />
    <property name="ImportViews" type="Boolean" />
    <property name="TableNameFilter" />
    <property name="ViewNameFilter" />
    <primaryKey>
      <prop name="ReverseEngineeringSettingsID" />
    </primaryKey>
    <relationship name="ReverseEngineering" type="single" relatedClass="ReverseEngineering" reverseRelationship="ReverseEngineeringSettings" relatedAssembly="FireStarterModeller.BO" owningBOHasForeignKey="false">
      <relatedProperty property="ReverseEngineeringSettingsID" relatedProperty="ReverseEngineeringSettingsID" />
    </relationship>
    <ui>
      <form>
        <field label="Import Tables?" property="ImportTables" type="CheckBox" />
        <field label="Table Name Filter:" property="TableNameFilter" />
        <field label="Import Views?" property="ImportViews" type="CheckBox" />
        <field label="View Name Filter:" property="ViewNameFilter" />
      </form>
    </ui>
  </class>
  <class name="TransactionLogEntry" assembly="FireStarterModeller.BO" table="transactionlogentry" displayName="Transaction Log Entry">
    <property name="TransactionSequenceNo" type="Int32" compulsory="true" autoIncrementing="true" />
    <property name="DateTimeUpdated" type="DateTime" />
    <property name="WindowsUser">
      <rule name="WindowsUser">
        <add key="maxLength" value="255" />
      </rule>
    </property>
    <property name="LogonUser">
      <rule name="LogonUser">
        <add key="maxLength" value="255" />
      </rule>
    </property>
    <property name="MachineName">
      <rule name="MachineName">
        <add key="maxLength" value="255" />
      </rule>
    </property>
    <property name="BusinessObjectTypeName">
      <rule name="BusinessObjectTypeName">
        <add key="maxLength" value="255" />
      </rule>
    </property>
    <property name="CRUDAction" displayName="CRUD Action">
      <rule name="CRUDAction">
        <add key="maxLength" value="255" />
      </rule>
    </property>
    <property name="DirtyXML" type="LongText" assembly="Habanero.Util" displayName="Dirty XML" />
    <property name="BusinessObjectToString">
      <rule name="BusinessObjectToString">
        <add key="maxLength" value="255" />
      </rule>
    </property>
    <primaryKey isObjectID="false">
      <prop name="TransactionSequenceNo" />
    </primaryKey>
  </class>
  <class name="UIColumnLayout" assembly="FireStarterModeller.BO" displayName="UI Column Layout">
    <property name="UIColumnLayoutID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Width" type="Int32" default="-1" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIFormID" type="Guid" compulsory="true" />
    <property name="UITabID" type="Guid" compulsory="true" />
    <primaryKey>
      <prop name="UIColumnLayoutID" />
    </primaryKey>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="UIColumnLayout" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Aggregation">
      <relatedProperty property="UIColumnLayoutID" relatedProperty="UIColumnLayoutID" />
    </relationship>
    <relationship name="UIForm" type="single" relatedClass="UIFormInfo" reverseRelationship="UIColumnLayouts" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIFormID" relatedProperty="UIFormID" />
    </relationship>
    <relationship name="UITab" type="single" relatedClass="UITab" reverseRelationship="UIColumnLayouts" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UITabID" relatedProperty="UITabID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Width" property="Width" />
      </grid>
      <form>
        <field label="Width:" property="Width" type="NumericUpDown" />
      </form>
    </ui>
  </class>
  <class name="UIControlMapperType" assembly="FireStarterModeller.BO" displayName="UI Control Mapper Type">
    <property name="UIControlMapperTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="AssemblyName" />
    <property name="TypeName" />
    <property name="SolutionID" type="Guid" displayName="Project Info">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UIControlMapperTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIControlMapperTypes" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="UIControlMapperType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIControlMapperTypeID" relatedProperty="UIControlMapperTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Assembly Name" property="AssemblyName" />
        <column heading="Type Name" property="TypeName" />
      </grid>
      <form>
        <field label="Assembly Name:" property="AssemblyName" />
        <field label="Type Name:" property="TypeName" />
        <field label="Project Info:" property="SolutionID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIControlType" assembly="FireStarterModeller.BO" displayName="UI Control Type">
    <property name="AssemblyName" compulsory="true" />
    <property name="TypeName" compulsory="true" />
    <property name="UIControlTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="Solution">
      <businessObjectLookupList class="DMSolution" assembly="FireStarterModeller.BO" />
    </property>
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UIControlTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIControlTypes" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIFields" type="multiple" relatedClass="UIField" reverseRelationship="UIControlType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIControlTypeID" relatedProperty="UIControlTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Type Name" property="TypeName" />
        <column heading="Assembly Name" property="AssemblyName" />
      </grid>
      <form>
        <field label="Assembly Name: *" property="AssemblyName" />
        <field label="Type Name: *" property="TypeName" />
        <field label="Project Info: *" property="SolutionID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIField" assembly="FireStarterModeller.BO" displayName="UI Field">
    <property name="UIFieldID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="LabelText" />
    <property name="PropertyID" type="Guid" compulsory="true" displayName="PropertyID" />
    <property name="UIControlTypeID" type="Guid" compulsory="true">
      <businessObjectLookupList class="UIControlType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="UIControlMapperTypeID" type="Guid">
      <businessObjectLookupList class="UIControlMapperType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Editable" type="Boolean" default="True" />
    <property name="ToolTipText" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIColumnLayoutID" type="Guid" compulsory="true" />
    <property name="OrdinalPosition" type="Int32" default="0" compulsory="true" description="This is the Position that this control will be shown on the BoEditor Panel.">
      <rule name="OrdinalPosition">
        <add key="max" value="2147483647" />
        <add key="min" value="0" />
      </rule>
    </property>
    <primaryKey>
      <prop name="UIFieldID" />
    </primaryKey>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIColumnLayout" type="single" relatedClass="UIColumnLayout" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIColumnLayoutID" relatedProperty="UIColumnLayoutID" />
    </relationship>
    <relationship name="UIControlMapperType" type="single" relatedClass="UIControlMapperType" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIControlMapperTypeID" relatedProperty="UIControlMapperTypeID" />
    </relationship>
    <relationship name="UIControlType" type="single" relatedClass="UIControlType" reverseRelationship="UIFields" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIControlTypeID" relatedProperty="UIControlTypeID" />
    </relationship>
    <relationship name="UIParameters" type="multiple" relatedClass="UIParameter" reverseRelationship="UIField" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UIFieldID" relatedProperty="UIFieldID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property I D" property="PropertyID" />
      </grid>
      <form>
        <field label="Property I D: *" property="PropertyID" type="ComboBox" />
        <field label="Label Text:" property="LabelText" />
        <field label="Editable?" property="Editable" type="CheckBox" />
        <field label="Tool Tip Text:" property="ToolTipText" />
        <field label="Control Type: *" property="UIControlTypeID" type="ExtendedComboBoxWin" assembly="Habanero.UI.Win" mapperType="ExtendedComboBoxMapper" mapperAssembly="Habanero.UI.Base" />
        <field label=" Control Mapper Type:" property="UIControlMapperTypeID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIFormInfo" assembly="FireStarterModeller.BO" displayName="UI Form">
    <property name="UIFormID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Width" type="Int32" default="300" compulsory="true" />
    <property name="Height" type="Int32" default="250" compulsory="true" />
    <property name="Title" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIViewID" type="Guid" compulsory="true">
      <businessObjectLookupList class="UIView" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="UIFormID" />
    </primaryKey>
    <relationship name="UIColumnLayouts" type="multiple" relatedClass="UIColumnLayout" reverseRelationship="UIForm" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UIFormID" relatedProperty="UIFormID" />
    </relationship>
    <relationship name="UITabs" type="multiple" relatedClass="UITab" reverseRelationship="UIFormInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="Name ASC">
      <relatedProperty property="UIFormID" relatedProperty="UIFormID" />
    </relationship>
    <relationship name="UIView" type="single" relatedClass="UIView" reverseRelationship="UIFormInfo" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <ui>
      <form>
        <columnLayout width="250">
          <field label="Title:" property="Title" />
        </columnLayout>
        <columnLayout width="250">
          <field label="Width: *" property="Width" type="NumericUpDown" />
        </columnLayout>
        <columnLayout width="250">
          <field label="Height: *" property="Height" />
        </columnLayout>
      </form>
    </ui>
  </class>
  <class name="UIGridColumnControlType" assembly="FireStarterModeller.BO" displayName="UI Grid Column Control Type">
    <property name="UIGridColumnControlTypeID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="Control Type" />
    <property name="AssemblyName" compulsory="true" />
    <property name="TypeName" compulsory="true" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="SolutionID" />
    <key name="AK1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UIGridColumnControlTypeID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" reverseRelationship="UIGridColumnControlTypes" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIColumns" type="multiple" relatedClass="UIGridColumnInfo" reverseRelationship="UIGridColumnControlType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIGridColumnControlTypeID" relatedProperty="UIGridColumnControlTypeID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Type Name" property="TypeName" />
        <column heading="Assembly Name" property="AssemblyName" />
      </grid>
      <form>
        <field label="Assembly Name: *" property="AssemblyName" />
        <field label="Type Name: *" property="TypeName" />
        <field label="Project Info: *" property="SolutionID" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIGridColumnInfo" assembly="FireStarterModeller.BO" displayName="UI Grid Column">
    <property name="UIGridColumnID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="U I Grid Column ID" />
    <property name="Heading" description="The Heading to be used for this GridColumn. Will default to the Display Value for the property if no value captured for this field." />
    <property name="PropertyID" type="Guid" compulsory="true" description="The Property that is represented by this UI Grid Column." />
    <property name="UIGridColumnControlTypeID" type="Guid" compulsory="true" displayName="Grid Column Type">
      <businessObjectLookupList class="UIGridColumnControlType" assembly="FireStarterModeller.BO" />
    </property>
    <property name="Editable" type="Boolean" default="True" description="Is this Column Editable or not. If this is set to true then standard ReadWrite rules and Security rules will be used to determine if the column is editable." />
    <property name="Width" type="Decimal" default="100" description="The Min Width that this column will be shown as in the grid." />
    <property name="Alignment" default="left">
      <simpleLookupList>
        <item display="centre" value="centre" />
        <item display="left" value="left" />
        <item display="right" value="right" />
      </simpleLookupList>
    </property>
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this column def being previously generated or not." />
    <property name="UIGridID" type="Guid" compulsory="true" />
    <property name="OrdinalPosition" type="Int32" default="0" compulsory="true" description="The order that this Column is shown in the Grid. This defaults to the Order that the OrdinalPosition of the DMProperty.">
      <rule name="OrdinalPosition">
        <add key="max" value="2147483647" />
        <add key="min" value="0" />
      </rule>
    </property>
    <primaryKey>
      <prop name="UIGridColumnID" />
    </primaryKey>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="UIGridColumnInfos" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIGrid" type="single" relatedClass="UIGridInfo" reverseRelationship="UIColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <relationship name="UIGridColumnControlType" type="single" relatedClass="UIGridColumnControlType" reverseRelationship="UIColumns" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIGridColumnControlTypeID" relatedProperty="UIGridColumnControlTypeID" />
    </relationship>
    <relationship name="UIParameters" type="multiple" relatedClass="UIParameter" reverseRelationship="UIGridColumnInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UIGridColumnID" relatedProperty="UIColumnID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property I D" property="PropertyID" />
      </grid>
      <form>
        <field label="Property I D: *" property="PropertyID" type="ComboBox" />
        <field label="Heading: *" property="Heading" />
        <field label="Control Type: *" property="UIGridColumnControlTypeID" type="ExtendedComboBoxWin" assembly="Habanero.UI.Win" mapperType="ExtendedComboBoxMapper" mapperAssembly="Habanero.UI.Base" />
        <field label="Editable?" property="Editable" type="CheckBox" />
        <field label="Width:" property="Width" />
        <field label="Alignment:" property="Alignment" type="ComboBox" />
      </form>
    </ui>
  </class>
  <class name="UIGridFilter" assembly="FireStarterModeller.BO" displayName="UI Grid Filter">
    <property name="UIGridFilterID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="UI Grid Filter I D" />
    <property name="UIGridID" type="Guid" compulsory="true" displayName="UI Grid I D" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="FilterMode" type="FilterModes" assembly="Habanero.Base" default="Search" compulsory="true" description="The FilterMode that this Filter Control will use i.e. Search or Filter.">
      <simpleLookupList>
        <item display="Search" value="Search" />
        <item display="Filter" value="Filter" />
      </simpleLookupList>
    </property>
    <primaryKey>
      <prop name="UIGridFilterID" />
    </primaryKey>
    <relationship name="UIGridFilterProps" type="multiple" relatedClass="UIGridFilterProp" reverseRelationship="UIGridFilter" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UIGridFilterID" relatedProperty="UIGridFilterID" />
    </relationship>
    <relationship name="UIGridInfo" type="single" relatedClass="UIGridInfo" reverseRelationship="UIGridFilter" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
  </class>
  <class name="UIGridFilterProp" assembly="FireStarterModeller.BO" displayName="UI Grid Filter Prop">
    <property name="UIGridFilterPropID" type="Guid" readWriteRule="WriteNew" compulsory="true" displayName="UI Grid Filter Prop ID" description="The Object Identifier for this UIGridFilterProp" />
    <property name="UIGridFilterID" type="Guid" compulsory="true" displayName="UI Grid Filter I D" description="What UI Grid Filte is this UIGridFilterProp for." />
    <property name="PropertyID" type="Guid" compulsory="true" displayName="PropertyID" description="What is the property that this UIGridFilterProp is mapped to." />
    <property name="Generated" type="Boolean" default="False" compulsory="true" description="Has this UIGridFilterProp been previoualy generated to code or not." />
    <property name="FilterControlTypeID" type="Guid" compulsory="true" displayName="Filter Control Type ID" description="The Type of filter control to use for this FilterProperty e.g. StringTextBoxFilter" />
    <property name="LabelText" description="The text that will be used in the filter control label if no specified text then the label will be derived from a combination of the Property Display name and the Filter Clause Operator." />
    <property name="DefaultValue" description="The Default value that will be used in this filter control" />
    <property name="Nullable" type="Boolean" />
    <property name="FilterClauseOp" type="FilterClauseOperator" assembly="Habanero.Base" displayName="Filter Clause Operator">
      <simpleLookupList>
        <item display="=" value="OpEquals" />
        <item display="Like" value="OpLike" />
        <item display="&gt;=" value="OpGreaterThanOrEqualTo" />
        <item display="&lt;=" value="OpLessThanOrEqualTo" />
        <item display="&gt;" value="OpGreaterThan" />
        <item display="&lt;" value="OpLessThan" />
      </simpleLookupList>
    </property>
    <property name="OrdinalPosition" type="Int32" description="The ordinal position that this filter control will be shown in the filter control." />
    <property name="ToolTipText" description="The Tool tip text that will be shown for this filter Property. If no Tool Tip Text is captured then it will default to the tool tip text from the Associated Property Description" />
    <key name="AK1">
      <prop name="PropertyID" />
      <prop name="UIGridFilterID" />
    </key>
    <primaryKey>
      <prop name="UIGridFilterPropID" />
    </primaryKey>
    <relationship name="Property" type="single" relatedClass="DMProperty" reverseRelationship="UIGridFilterProps" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="PropertyID" relatedProperty="PropertyID" />
    </relationship>
    <relationship name="UIGridFilter" type="single" relatedClass="UIGridFilter" reverseRelationship="UIGridFilterProps" relatedAssembly="FireStarterModeller.BO" deleteAction="DoNothing">
      <relatedProperty property="UIGridFilterID" relatedProperty="UIGridFilterID" />
    </relationship>
    <relationship name="UIGridFilterType" type="single" relatedClass="UITypeDefinition" reverseRelationship="UIGridFilterProps" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="FilterControlTypeID" relatedProperty="UITypeDefinitionID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Property I D" property="PropertyID" />
      </grid>
      <form>
        <field label="Property I D: *" property="PropertyID" type="ComboBox" />
        <field label="Label Text:" property="LabelText" />
        <field label="Filter Control Type:" property="FilterControlTypeID" type="ComboBox" />
        <field label="Filter Clause Op:" property="FilterClauseOp" type="ComboBox" />
        <field label="Default Value:" property="DefaultValue" />
        <field label="Nullable?" property="Nullable" type="CheckBox" />
      </form>
    </ui>
  </class>
  <class name="UIGridInfo" assembly="FireStarterModeller.BO" displayName="UI Grid">
    <property name="UIGridID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="SortColumn" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIViewID" type="Guid" compulsory="true">
      <businessObjectLookupList class="UIView" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="UIGridID" />
    </primaryKey>
    <relationship name="UIColumns" type="multiple" relatedClass="UIGridColumnInfo" reverseRelationship="UIGrid" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" orderBy="OrdinalPosition">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <relationship name="UIGridFilter" type="single" relatedClass="UIGridFilter" reverseRelationship="UIGridInfo" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="UIGridID" relatedProperty="UIGridID" />
    </relationship>
    <relationship name="UIView" type="single" relatedClass="UIView" reverseRelationship="UIGridInfo" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
  </class>
  <class name="UIParameter" assembly="FireStarterModeller.BO" displayName="UI Parameter">
    <property name="UIParameterID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true" />
    <property name="Value" compulsory="true" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIFieldID" type="Guid" />
    <property name="UIColumnID" type="Guid" />
    <primaryKey>
      <prop name="UIParameterID" />
    </primaryKey>
    <relationship name="UIField" type="single" relatedClass="UIField" reverseRelationship="UIParameters" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIFieldID" relatedProperty="UIFieldID" />
    </relationship>
    <relationship name="UIGridColumnInfo" type="single" relatedClass="UIGridColumnInfo" reverseRelationship="UIParameters" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated">
      <relatedProperty property="UIColumnID" relatedProperty="UIGridColumnID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" />
      </grid>
      <form>
        <field label="Name: *" property="Name" />
        <field label="Value: *" property="Value" />
      </form>
    </ui>
  </class>
  <class name="UITab" assembly="FireStarterModeller.BO" displayName="UI Tab">
    <property name="UITabID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="Name" compulsory="true" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="UIFormID" type="Guid" compulsory="true" />
    <primaryKey>
      <prop name="UITabID" />
    </primaryKey>
    <relationship name="UIColumnLayouts" type="multiple" relatedClass="UIColumnLayout" reverseRelationship="UITab" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition">
      <relatedProperty property="UITabID" relatedProperty="UITabID" />
    </relationship>
    <relationship name="UIFormInfo" type="single" relatedClass="UIFormInfo" reverseRelationship="UITabs" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UIFormID" relatedProperty="UIFormID" />
    </relationship>
    <ui>
      <grid>
        <column heading="Name" property="Name" />
      </grid>
      <form>
        <field label="Name: *" property="Name" />
      </form>
    </ui>
  </class>
  <class name="UITypeDefinition" assembly="FireStarterModeller.BO" displayName="U I Type Definition">
    <property name="UITypeDefinitionID" type="Guid" readWriteRule="WriteNew" compulsory="true" description="The Unique Object IDentifier" />
    <property name="AssemblyName" compulsory="true" description="The assembly where this Type Definition is to be loaded from e.g. System.Windows.Forms" />
    <property name="TypeName" compulsory="true" description="The TypeName that this UITypeDefintion is for e.g. TextBox" />
    <property name="SolutionID" type="Guid" compulsory="true" displayName="Solution" description="The Solution that this UITypeDefinition is associated with." />
    <property name="TypeDescriminator" description="This is the Discriminor used for Single Table Inheritance. This Discriminaotor is used to identify the actual sub type of this Type Definition." />
    <key name="UC1">
      <prop name="AssemblyName" />
      <prop name="SolutionID" />
      <prop name="TypeDescriminator" />
      <prop name="TypeName" />
    </key>
    <primaryKey>
      <prop name="UITypeDefinitionID" />
    </primaryKey>
    <relationship name="Solution" type="single" relatedClass="DMSolution" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="SolutionID" relatedProperty="SolutionID" />
    </relationship>
    <relationship name="UIGridFilterProps" type="multiple" relatedClass="UIGridFilterProp" reverseRelationship="UIGridFilterType" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="UITypeDefinitionID" relatedProperty="FilterControlTypeID" />
    </relationship>
  </class>
  <class name="UIView" assembly="FireStarterModeller.BO" displayName="UI View">
    <property name="UIViewID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
    <property name="ViewName" default="default" compulsory="true" description="The name that the UI is given this is used by the form or control that this form is built onto so that the appropriate form can be built" />
    <property name="Generated" type="Boolean" default="False" compulsory="true" />
    <property name="ClassID" type="Guid" compulsory="true" displayName="Business Object Info">
      <businessObjectLookupList class="DMClass" assembly="FireStarterModeller.BO" />
    </property>
    <primaryKey>
      <prop name="UIViewID" />
    </primaryKey>
    <relationship name="Class" type="single" relatedClass="DMClass" reverseRelationship="UIViews" relatedAssembly="FireStarterModeller.BO">
      <relatedProperty property="ClassID" relatedProperty="ClassID" />
    </relationship>
    <relationship name="UIFormInfo" type="single" relatedClass="UIFormInfo" reverseRelationship="UIView" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <relationship name="UIGridInfo" type="single" relatedClass="UIGridInfo" reverseRelationship="UIView" relatedAssembly="FireStarterModeller.BO" deleteAction="DeleteRelated" relationshipType="Composition" owningBOHasForeignKey="false">
      <relatedProperty property="UIViewID" relatedProperty="UIViewID" />
    </relationship>
    <ui>
      <grid>
        <column heading="View Name" property="ViewName" />
      </grid>
      <form>
        <field label="View Name: *" property="ViewName" />
      </form>
    </ui>
  </class>
</classes>